﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Blank.CommonLib.Encrypt
{
    public class RSASecurityHelper
    {
        /// <summary>    
        /// 非对称加密生成的私钥和公钥     
        /// </summary>    
        /// <param name="privateKey">私钥</param>    
        /// <param name="publicKey">公钥</param>    
        public static void CreateKey(out string privateKey, out string publicKey)
        {
            privateKey = "";
            publicKey = "";
        }
        #region 非对称数据加密（公钥加密）
        /// <summary>    
        /// 非对称加密字符串数据，返回加密后的数据    
        /// </summary>    
        /// <param name="publicKey">公钥</param>    
        /// <param name="originalString">待加密的字符串</param>    
        /// <returns>加密后的数据</returns>    
        public static string RSAEncrypt(string publicKey, string originalString) { return null; }
        /// <summary>    
        /// 非对称加密字节数组，返回加密后的数据    
        /// </summary>    
        /// <param name="publicKey">公钥</param>    
        /// <param name="originalBytes">待加密的字节数组</param>    
        /// <returns>返回加密后的数据</returns>    
        public static string RSAEncrypt(string publicKey, byte[] originalBytes) { return null; }
        #endregion
        #region 非对称解密（私钥解密）
        /// <summary>    
        /// 非对称解密字符串，返回解密后的数据    
        /// </summary>    
        /// <param name="privateKey">私钥</param>    
        /// <param name="encryptedString">待解密数据</param>    
        /// <returns>返回解密后的数据</returns>    
        public static string RSADecrypt(string privateKey, string encryptedString) { return null; }

        /// <summary>    
        /// 非对称解密字节数组，返回解密后的数据    
        /// </summary>    
        /// <param name="privateKey">私钥</param>    
        /// <param name="encryptedBytes">待解密数据</param>    
        /// <returns></returns>    
        public static string RSADecrypt(string privateKey, byte[] encryptedBytes) { return null; }

        #endregion
        #region 非对称加密签名、验证
        /// <summary>    
        /// 使用非对称加密签名数据    
        /// </summary>    
        /// <param name="privateKey">私钥</param>    
        /// <param name="originalString">待加密的字符串</param>    
        /// <returns>加密后的数据</returns>    
        public static string RSAEncrypSignature(string privateKey, string originalString) { return null; }
        /// <summary>    
        /// 对私钥加密签名的字符串，使用公钥对其进行验证    
        /// </summary>    
        /// <param name="originalString">未加密的文本，如机器码</param>    
        /// <param name="encrytedString">加密后的文本，如注册序列号</param>    
        /// <returns>如果验证成功返回True，否则为False</returns>    
        public static bool Validate(string originalString, string encrytedString) { return false; }

        /// <summary>    
        /// 对私钥加密的字符串，使用公钥对其进行验证    
        /// </summary>    
        /// <param name="originalString">未加密的文本，如机器码</param>    
        /// <param name="encrytedString">加密后的文本，如注册序列号</param>    
        /// <param name="publicKey">非对称加密的公钥</param>    
        /// <returns>如果验证成功返回True，否则为False</returns>    
        public static bool Validate(string originalString, string encrytedString, string publicKey) { return false; }

        #endregion
    }
}
